// Copyright (C) 1953-2022 NUDT
// Verilog module name - pulse_select
// Version: V4.0.20221216
// Created:
//         by - fenglin
////////////////////////////////////////////////////////////////////////////
// Description:
//         pulse_select
///////////////////////////////////////////////////////////////////////////
`timescale 1ns/1ps

module pulse_select
(
		i_clk,
		i_rst_n,
	//Network input top module
		i_rx_pulse0,
		i_rx_pulse1,
		i_rx_pulse2,
		i_rx_pulse3,
		
		i_tx_pulse0,
		i_tx_pulse1,
		i_tx_pulse2,
		i_tx_pulse3,
		
		iv_pto_select,
		i_table_trigger0,		
		i_table_trigger1,
		i_cyclestart,
		
		o_PTO0,
		o_PTO1,
		o_PTO2,
		o_PTO3		
);
input 				i_clk;
input	            i_rst_n;
	            
input				i_rx_pulse0;
input               i_rx_pulse1;
input               i_rx_pulse2;
input               i_rx_pulse3;
                
input               i_tx_pulse0;
input               i_tx_pulse1;
input               i_tx_pulse2;
input               i_tx_pulse3;
                
input 	[6:0]       iv_pto_select;
                
input               i_table_trigger0;
input               i_table_trigger1;
input               i_cyclestart;
                
output  reg         o_PTO0;
output  reg         o_PTO1;
output  reg         o_PTO2;
output  reg         o_PTO3;
				

always@	(posedge i_clk or negedge i_rst_n)begin
	if(!i_rst_n) begin
		o_PTO0	<= 1'b0;
		o_PTO1	<= 1'b0;
		o_PTO2	<= 1'b0;
		o_PTO3	<= 1'b0;
	end
	else begin
		case(iv_pto_select[2:0])
			3'd0: 		o_PTO0			<= i_rx_pulse0;
			3'd1: 		o_PTO0			<= i_rx_pulse1;
			3'd2: 		o_PTO0			<= i_rx_pulse2;
			3'd3: 		o_PTO0			<= i_rx_pulse3;
			default: 	o_PTO0			<= o_PTO0;
		endcase
		
		case(iv_pto_select[5:3])
			3'd0: 		o_PTO1			<= i_tx_pulse0;
			3'd1: 		o_PTO1			<= i_tx_pulse1;
			3'd2: 		o_PTO1			<= i_tx_pulse2;
			3'd3: 		o_PTO1			<= i_tx_pulse3;
			default: 	o_PTO1			<= o_PTO1;
		endcase
		
		case(iv_pto_select[6])
			1'b0:		o_PTO2			<= i_table_trigger0;
			1'b1:		o_PTO2			<= i_table_trigger1;		
		endcase
		o_PTO3	<= i_cyclestart;
	end		
end
endmodule 